home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Precision Software Appli…tions Silver Collection 1
/
Precision Software Applications Silver Collection Volume One (PSM) (1993).iso
/
windows
/
games
/
wincapt.arj
/
README.TXT
< prev
next >
Wrap
Text File
|
1992-07-15
|
8KB
|
169 lines
WINCAP Windows Screen Capture Sample Application
------------------------------------------------
Wincap Version 3.10 (second version) requires Windows 3.1 to run and the
Windows 3.1 SDK to compile and build.
DESCRIPTION:
------------
WINCAP demonstrates how to capture portions of the screen, specific windows,
or the entire screen and save it to a file or print it. This sample also
defines routines that accomplish common DIB functions, and are referred to as
the DIB API. Wincap uses the DIB API functions to do most of the
capture/printing/saving work. See the file DIBAPI.TXT for a description of the
DIB api functions.
This is the second version, which adds the following:
- New API for displaying DIBs and Bitmaps
- Bug Fixes:
- Fixed calculation of bits for 15-bit display drivers
- Fixed size of output file problem (too many bytes written out)
- Checks for capabilities of display driver
- Can now capture windows with menus pulled-down
- Easier to use interface
- Uses Windows 3.1 Common Dialogs
3.1 specific features: uses new 3.1 keyboard hook functions
OVERVIEW OF TECHNIQUE
---------------------
The preferred way to capture a screen under Windows is to copy the screen
pixels into a device-independent bitmap (DIB), and then to use this DIB in
subsequent operations (for example, to save the bitmap to a file or print the
bitmap).
If a DIB is not used in the intermediate step, the results of the screen print
may be less than desirable.
By using a DIB to hold the screen image, device-dependent information is
removed from the bitmap. This simplifies the process of displaying the image
on devices with different display capabilities. For instance, capturing a
screen from a 24-bit display adapter and printing it on a 1-bit (monochrome)
printer can be done with exceptional results if DIBs are used. Additionally,
many printer drivers implement gray scale dithering; the output on these
printers is also exceptional when DIBs are used.
[Side Note: The BitBlt function should be avoided when printing bitmaps
due to the device-dependency of bitmaps. The type of bitmaps that the
BitBlt function requires are normally in the format of the display driver
rather than the printer driver. Depending on the drivers involved, the
results of using BitBlt to print a bitmap can vary from extrememly poor
output quality to no output at all.
Although all printer drivers are able to BitBlt a monochrome bitmap to
the printer, this technique normally produces poor results because the
printer cannot apply grayscaling to the image.]
This technique of using a DIB to convert a bitmap between display devices with
different capabilities can also be used to convert bitmaps while preserving
the original color information (for example, loading a 256-color bitmap from a
.BMP file and printing it to a 3-color printer or displaying it on a 24-bit
display).
SPECIFICS FOR THIS SAMPLE
-------------------------
This sample is an illustration of the following Windows techniques:
- Capturing the screen (or a specific window) into a DIB
- Capturing the screen to a Bitmap (device-dependent bitmap)
- Printing a DIB using banding
- Loading and Saving a DIB to a disk file (.BMP file)
- Converting between DIBs and DDBs
- Displaying the captured screen DDB
All of these are accomplished with calls to a simple-to-use DIB API. The DIB
API provides the following functions:
BitmapToDIB() - Creates a DIB from a bitmap
ChangeBitmapFormat() - Changes a bitmap to a specified DIB format
ChangeDIBFormat() - Changes a DIB's BPP and/or compression format
CopyScreenToBitmap() - Copies entire screen to a standard Bitmap
CopyScreenToDIB() - Copies entire screen to a DIB
CopyWindowToBitmap() - Copies a window to a standard Bitmap
CopyWindowToDIB() - Copies a window to a DIB
CreateDIBPalette() - Creates a palette from a DIB
CreateDIB() - Creates a new DIB
DestroyDIB() - Deletes DIB when finished using it
DIBError() - Displays message box with error message
DIBHeight() - Gets the DIB height
DIBNumColors() - Calculates number of colors in the DIB's color table
DIBToBitmap() - Creates a bitmap from a DIB
DIBWidth() - Gets the DIB width
FindDIBBits() - Sets pointer to the DIB bits
GetSystemPalette() - Gets the current palette
LoadDIB() - Loads a DIB from a file
PaintBitmap() - Displays standard bitmap in the specified DC
PaintDIB() - Displays DIB in the specified DC
PalEntriesOnDevice() - Gets the number of palette entries
PaletteSize() - Calculates the buffer size required by a palette
PrintDIB() - Prints the specified DIB
PrintScreen() - Prints the entire screen
PrintWindow() - Prints all or part of a window
SaveDIB() - Saves the specified dib in a file
The source code to these functions are included in this sample. You can
easily call these functions from a different application by simply compiling
the enclosed DIBAPI.DLL, and linking with the DIBAPI.LIB import library.
The file DIBAPI.TXT contains more information on the parameters/usage of
these functions. A Windows Help file for the DIB APIs is also included.
NOTE: The above DIB API were not written to support OS/2-style DIBs, although
some of the utility functions (see DIBUTIL.C) will work with either Windows or
OS/2 DIBs.
SOURCE FILE LISTING
-------------------
The following files are a part of the DIB API DLL:
copy.c - CopyWindowToDIB, CopyScreenToDIB, CopyWindowToBitmap,
CopyScreenToBitmap, PaintDIB, PaintBitmap plus
misc utility functions
dibapi.def - DEF file for DIB API DLL
dibapi.h - Header containing constants for DIB errors and
prototypes for the DIB API functions
dibapi.hlp - Windows help file containing full DIB API reference
dibapi.mak - NMAKE Makefile for DIBAPI.DLL
dibapi.rc - Resource file for DIB API DLL
dibapi.txt - Documentation for DIB API functions
dibdll.h - Constants for DLL printing dialog
dibutil.c - More DIB utility functions
dibutil.h - DIB utility constants and macros
dllinit.c - Contains LibMain for DIB API DLL
errors.c - Defines all errors which can be returned from DIB
API functions
file.c - SaveDIB, LoadDIB, and DestroyDIB
print.c - PrintDIB, PrintWindow, and PrintScreen
wepcode.c - Contains WEP for DIB API DLL
The following files are for the WINCAP sample, which uses the DIB API DLL.
dialogs.c - Contains dialog routines for dialog boxes in WINCAP
dialogs.dlg - Dialog templates for WINCAP
dialogs.h - Dialog constants for WINCAP
dlgopen.c - Contains code for "File/Save" dialog box
hook.c - Contains code for keyboard hook
makefile - NMAKE Makefile for WINCAP
wincap.c - Contains WinMain - this is the main program file for
the WINCAP sample
wincap.def - DEF file for WINCAP
wincap.h - Contains WINCAP constants
wincap.rc - Resource file for WINCAP
CREDITS:
--------
Development Team: Mark Bader
Patrick Schreiber
Garrett McAuliffe
Eric Flo
Tony Claflin
Dan Ruder
Written by Microsoft Product Support Services, Developer Support.
Copyright (c) 1991 Microsoft Corporation. All rights reserved.